Cameras can be used to capture a sequence of images to be used as frames of a video signal. Cameras may be fixed to stable objects, for example a camera may be mounted on a stand such as a tripod to thereby keep the camera still while the video frames are captured. However, often cameras may be implemented in mobile devices and are not necessarily mounted to fixed objects, for example a camera may be held, or may be on a moving object such as a vehicle. Movement of the camera while the camera is capturing frames of a video signal may result in unwanted movement in the video signal itself.
Image stabilization is a method that can be used to compensate for the unwanted movement in a video signal. Some systems perform motion estimation in order generate motion vectors for use by an image stabilization process. One such system is described in “Online Video Stabilization Based on Particle Filters” by Junlan Yang et. al. Image stabilization algorithms may consist of three main parts: motion estimation, motion smoothing and motion compensation. A motion estimation block may estimate local motion vectors within the video signal and on the basis of these local estimates calculate a global motion vector. A motion smoothing block may then deal with filtering of the estimated global motion vector in order to smooth the calculated value and prevent large and undesirable differences between motion vectors calculated previously. A motion compensation block may then shift an image in the opposite direction to the filtered global motion vector to thereby stabilize the video signal. The motion compensation block may take into account sophisticated transformations like rotation, warping or zooming.
It can require large amounts of processing resources to perform image stabilization based on motion vectors as described above. This can be a problem when the video signal is to be stabilized in real time, i.e. when a stabilized version of the video signal is to be used (e.g. transmitted in a video call or output from a device) at the same time as it is being captured by the camera. This can also be a problem when the device which is performing the image stabilization is a small, mobile device such as a mobile telephone in which the processing resources are limited.
In recent years, motion sensors have become simpler and cheaper to manufacture and the size of motion sensors has reduced significantly. It is now feasible to implement motion sensors in mobile devices. Motion sensors generate samples representing the motion of the sensor. Two prior art documents: “Using Sensors for Efficient Video Coding in Hand-held devices” by Andy L. Lin and “Accelerometer Based Digital Video Stabilization for General Security Surveillance Systems” by Martin Drahansky et. al, mention the possibility of using data from motion sensors for stabilization of a video signal.
A known processing utility “VirtualDub” provides offline stabilization (i.e. not in real time) that requires cropping of the video signal.
One mechanism for online (i.e. real time) send side digital stabilization has been proposed in GB Application No. 1109071.9. This mechanism is effective in many situations but requires cropping of the transmitted video. This can affect the quality of the transmitted video.